-
Notifications
You must be signed in to change notification settings - Fork 116
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add new configure option --with-mixedrefs for mixed pointer mode #359
Conversation
Please review @gacholio |
3f4876f
to
bc373c3
Compare
The configure script should complain (and fail) if you try to combine |
Thanks @keithc-ca! Added a check so that openj9-openjdk-jdk11/closed/autoconf/custom-hook.m4 Lines 75 to 82 in b944640
For setting |
b944640
to
4d63ec9
Compare
I think this is ready to merge: please squash. Will you be preparing pull requests for the other extension repositories?
When should we expect that? |
I think the focus is on JDK11 right now, but let me confirm in the main issue. I think this depends on the availability of CMake in JDK versions/various platforms. For the openj9 PR, I'm working on finishing up the pipeline changes needed (and testing them) and reorganizing the commits since there's a lot of changes. I expect to open up a PR by mid next week. I've opened up a PR eclipse-omr/omr#5657 for the OMR GC changes. |
4d63ec9
to
13bcbeb
Compare
I've squashed the commits. Are there documentation changes that are needed with this new configure option in the extensions repo? Or just within openj9/openj9-docs? |
This new option would be documented in the build instructions for Java 11, and similarly for other versions, probably near places where |
Would it be worth splitting the mixed refs and dual GC compile options? |
I don't understand what that means. As I understand it, mixed refs implies dual GC compiles. What could be split? |
Mixed refs work fine with the single compile of the GC, it just doesn't perform well. In the future, we may want to invest some time in templating, etc. to allow the single compile to work efficiently. |
For splitting, are you referring to adding pointer mode checks? |
If supporting both flavours of mixed refs isn't too onerous, it probably makes sense to do that now. I suggest we expose that option via using value of
The values 'static' and 'dynamic' are just my suggestions: others may have better suggestions. |
Ah I see. So in 'dynamic' mode, we actually don't want to define I can set a new CMAKE argument |
Correct, dynamic mode just defines both the compressed and full defines, without the override. |
417ccc2
to
04d832b
Compare
I've added If we are in mixed mode and If these changes look good, I'll port them to the JDK8/15/next equivalents. |
c5932da
to
657367b
Compare
I've added the requested changes and updated the description to note:
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Not as part of this pull request, but at some point I think we should have just one configuration option that affects reference representation (not both --with-mixedrefs
and --with-noncompressedrefs
), perhaps --with-references=[full|compressed-static|compressed-dynamic]
so we don't have to consider precedence of the two options.
If --with-mixedrefs is specified in the configure command, the 'default' OPENJ9_LIBS_SUBDIR is used for the build. The mxdptrs CMake file corresponding to the build OS is used as the OPENJ9_BUILDSPEC. --with-mixedrefs=[static/dynamic] sets the reference determination mode. --with-mixedrefs without any value provided defaults to static mode. OMR_MIXED_REFERENCES_MODE is communicated to OpenJ9 and OMR through CMake args. Fail configure if --with-mixedrefs is used without CMake enabled. The new mxdptr build specs are defined in OpenJ9. The compressed and full GC libraries generated with the mixed build work are copied to the OPENJ9_LIBS_SUBDIR alongside the other existing libraries. j9gc29, j9gcchk29 are always copied j9gc_full29, j9gcchk_full29 are copied when running in mixedrefs static mode If an OpenJ9-equivalent OS has been specified in OPENJ9_BUILD_OS, use the specified OS string to override the provided OPENJDK_BUILD_OS. Use OPENJ9_BUILD_MODE_ARCH to capture the other half of the OPENJ9_BUILDSPEC, where the architecture and the pointer mode (or other additional modes/settings) are specified. Signed-off-by: Sharon Wang <[email protected]>
657367b
to
33c02cd
Compare
Updated. Help string is now For --with-references=[full|compressed-static|compressed-dynamic], do you mean |
We'll need |
I opened #361 to keep note of this new configure option. |
What changes, required by this, are yet to be merged into openj9 and/or omr? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'll defer to Keith here.
@keithc-ca Here are the corresponding PRs |
Jenkins compile aix,osx,win,plinux jdk11 |
JZOS Integration
These are the jdk11 extensions changes needed for eclipse-openj9/openj9#8878.
If
--with-mixedrefs
is specified in the configure command, the 'default'OPENJ9_LIBS_SUBDIR
is used for the build. The mxdptrs CMake file corresponding to the build OS is used as theOPENJ9_BUILDSPEC
.--with-mixedrefs=[static/dynamic]
sets the reference determination mode.--with-mixedrefs
without any value provided defaults tostatic
mode.The compressed and full GC libraries generated with the mixed build work are copied to the
OPENJ9_LIBS_SUBDIR
alongside the other existing libraries.j9gc29
,j9gcchk29
are always copiedj9gc_full29
,j9gcchk_full29
are copied when running in mixedrefsstatic
modeNote that this will only work with an OpenJ9 CMake build. OpenJ9 UMA changes will be implemented after the CMake work is completed and any corresponding OMR/extensions changes will be provided in future PRs.
These changes depend on the new build specs defined in OpenJ9.
OpenJ9 PR: eclipse-openj9/openj9#11166
OMR PR: eclipse-omr/omr#5657
Ports